package com.example.baseadapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.List;

public class MyAdpater extends BaseAdapter {

    //ArrayAdapter只接受List<String>
    //SimpleAdapter只接受List<Map<String,Object>>
    //BaseAdapter接受的数据List内的数据格式，由子类决定

    private List<ContactModel> dataList;
    private Context context;
    private OnContactItemIconClick listener;

    public MyAdpater(Context context,List<ContactModel> dataList) {
        this.dataList = dataList;
        this.context = context;
    }

    public void setListener(OnContactItemIconClick listener) {
        this.listener = listener;
    }
    //步骤1：ListView的长度在此处与数据list长度建立联系

    @Override
    public int getCount() {
        return null !=dataList?dataList.size():0;
    }

    @Override
    public Object getItem(int i) {
        return null;
    }

    @Override
    public long getItemId(int i) {
        return 0;

    }



    //步骤2 ：条目布局与ListVIew显示内容建立联系
    //步骤3：getView()中的参数是不是对应数据list脚标
    //getView() 会随着列表滚动而不断重复调用
    //设4 参数convertView会被重复调用，会被重复赋值
    //解决办法  仅当convertView为空时对其赋值，不为空时复用
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        //布局填充器，将xml布局文件转化为VIew对象
        //参数2 布局是否有父布局
        //LayoutInflater.inflate()方法等同于new对象
        Holder holder;
        if (null==convertView){
            convertView= LayoutInflater.from(context).inflate(R.layout.contact_text,null);

            holder=new Holder();
            holder.contactIcon=convertView.findViewById(R.id.list_item_contact_icon);
            holder.contactName=convertView.findViewById(R.id.list_item_contact_name);
            convertView.setTag(holder);
        }else{
            holder=(Holder) convertView.getTag();

        }
        //将数据赋值给对应的条目子控件
        holder.contactIcon.setImageResource(dataList.get(position).getIconResId());
        holder.contactName.setText(dataList.get(position).getContactName());
        //添加条目中某个控件的点击事件
        holder.contactIcon.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(null!=listener){
                    listener.onContactItemIconClick(position);
                }
                //Toast.makeText(context,"点击了"+dataList.get(position).getContactName()+"的头像",
                //Toast.LENGTH_SHORT).show();
            }
        });

        return  convertView;

        //条目布局子控件
        /*ImageView icon=item.findViewById(R.id.list_item_contact_icon);
        TextView name=item.findViewById(R.id.list_item_contact_name);
        //list中数据
        String contactName=dataList.get(position).getContactName();
        int contactIconResId=dataList.get(position).getIconResId();
        //通过赋值，使条目布局的子控件，显示list中数据
        name.setText(contactName);
        icon.setImageResource(contactIconResId);
        return converView;*/
    }


    public  interface OnContactItemIconClick{
        void onContactItemIconClick(int position);
    }
    public class Holder{
        ImageView contactIcon;
        TextView contactName;
    }
}
